/* ld script to make ckcore Linux kernel */


#include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>

OUTPUT_ARCH(ckcore)
ENTRY(_start)
PHDRS {
	textsram PT_LOAD FLAGS(7);
	text PT_LOAD FLAGS(7);  /* RWX */
	data PT_LOAD FLAGS(7);
	note PT_NOTE FLAGS(4);  /* R__ */
}

jiffies = jiffies_64 + 4;

SECTIONS
{
  . = 0x80000000 + 0x10006000;  /* Text in SRAM */
  .textsram : {
        HEAD_TEXT
        *(.vbr.text)
        *(.tlbstack.text)
    } :textsram

  . = 0x40000000 + CONFIG_RAM_BASE;
  _stext = .;			/* Text and read-only data */
  _text = .;			/* Text and read-only data */
  .text : {
	TEXT_TEXT
	SCHED_TEXT
	LOCK_TEXT
	*(.fixup)
	*(.gnu.warning)
	} :text = 0

  _etext = .;			/* End of text section */

  . = ALIGN(16);		/* Exception table */
  __start___ex_table = .;
  __ex_table : { *(__ex_table) }
  __stop___ex_table = .;

  RODATA

  .data : {			/* Data */
	DATA_DATA
	CONSTRUCTORS
	}

  . = ALIGN(16);
  .data.cacheline_aligned : { *(.data.cacheline_aligned) }

  .bss : {
	_sbss = . ; 
	 *(.bss) 
	_ebss = . ;
	}		/* BSS */

  _edata = .;			/* End of data section */

  /* will be freed after init */
  . = ALIGN(4096);		/* Init code and data */
  __init_begin = .;
  .init.text : {
	_sinittext = .;
	INIT_TEXT
	_einittext = .;
  } :data
  .init.data : { INIT_DATA }
  . = ALIGN(16);
  __setup_start = .;
  .init.setup : { *(.init.setup) }
  __setup_end = .;
  __initcall_start = .;
  .initcall.init : {
	INITCALLS
  }
  __initcall_end = .;
  __con_initcall_start = .;
  .con_initcall.init : { *(.con_initcall.init) }
  __con_initcall_end = .;
  .ckcore_fixup : {
	__start_fixup = .;
	*(.ckcore_fixup)
	__stop_fixup = .;
  }
  SECURITY_INIT
#ifdef CONFIG_BLK_DEV_INITRD
  . = ALIGN(8192);
  __initramfs_start = .;
  .init.ramfs : { *(.init.ramfs) }
  __initramfs_end = .;
#endif
  NOTES
  . = ALIGN(8192);
  __init_end = .;

  .data.init_task : { *(.data.init_task) }	/* The initial task and kernel stack */

  _end = . ;

  /* Sections to be discarded */
  /DISCARD/ : {
	EXIT_TEXT
	EXIT_DATA
	*(.exitcall.exit)
	}

  /* Stabs debugging sections.  */
	STABS_DEBUG
        DWARF_DEBUG

        /* These must appear regardless of  .  */
        .gptab.sdata : {
                *(.gptab.data)
                *(.gptab.sdata)
        }
        .gptab.sbss : {
                *(.gptab.bss)
                *(.gptab.sbss)
        }

}
